PASM - Pre ASMbler ------------------ This pre-comlier allows for strings within ASM files. It simple looks for "" and exchanges it with an offset to a data segment where the string is placed. Usage: PASM file.asm It will go thru all included files and creat a massive ASM.TMP file which is the final version that can be compiled. Another output file called _STR_.TMP holds all the strings and must be included into the input ASM file. But if PASM sees the include it will try and use it. Therefore this include must be set as #include _str_.tmp and when PASM sees it, it just removes the # and moves on. Then MASM can compile it. The only problem with this is that if there are any errors within the ASM file you will not have any clue where it was from (depending on how many files make the actual program). You can edit the ASM.TMP to find out but it makes things a little harder. PASM also changes \n into 13,10 and \\ into a \ and all other C type conversions. All of this is done for you when you include qlib.inc in your programs so just use the strings. Here are some examples: mov edx,"\n Hello \n" mov ah,9 int 21h invoke printf,"Hello, world. AX=%w\n",ax Here are some newer bugs found with PASM: - PASM bugs : can't use forward references : using signed numbers is very unpredictable ie: callp proc,ax When ax is a signed number it will always be zero extended to a 32bit number. (even if you ASSUME ax:sbyte) Just remember that everything is ZERO extended to 32bits. Remedy : Use C for programming, ASM programming sux for BIG projects or you can use INVOKE but be careful See pasm.c(the source) for improvements... See masmbugs.txt for more info...